1. Field of the Invention
The invention relates generally to communication systems, and more particularly to communicating with and initializing an uninitialized computer peripheral device.
2. Discussion of Related Art
In a typical computer system such as a personal computer or workstation, various peripheral devices are used to provide input/output capabilities for the computer system. For example, a typical computer system includes peripheral devices such as a disk drive, a CD-ROM drive, audio/video/graphics controllers, a local area network adapter, and a modem. Architecturally, the peripheral devices are interconnected with a central processing unit (CPU) and memory in the computer system by means of a peripheral bus.
One type of peripheral bus in widespread use is the Peripheral Component Interconnect (PCI) bus. PCI is a standardized bus architecture that permits very high speed burst transfers to and from the peripheral devices. Each peripheral device on the PCI bus, referred to as a "PCI peripheral device," supports and participates in the PCI bus protocol. During startup of the computer system, each PCI peripheral device is identified and assigned any computer system resources that it requires.
In order to be identified during computer system startup, each PCI peripheral device is capable of reporting certain information (hereinafter referred to as "configuration information") which identifies the PCI peripheral device and indicates the computer system resources required by the PCI peripheral device. Therefore, a typical PCI peripheral device includes either hard-coded logic or a programmable non-volatile memory for storing configuration information. Where hard-coded logic is used for storing configuration information, the configuration information cannot be changed once the configuration information is hard-coded in the logic. Where a programmable non-volatile memory is used for storing configuration information, the configuration information must be pre-programmed before the PCI peripheral device can operate on the PCI bus, although the configuration information can be subsequently changed if necessary by re-programming the programmable non-volatile memory. This latter approach is preferred over the hard-coded approach due to the ability to change the configuration information if necessary, for example, due to a software or hardware upgrade of the PCI peripheral device. However, the step of pre-programming the programmable non-volatile memory is an additional step taken prior to installation of the PCI peripheral device, typically during manufacturing of the PCI peripheral device, and therefore adds a certain cost to the PCI peripheral device. A PCI peripheral device that is programmable but also requires no pre-programming is desirable.